home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 25 / Cream of the Crop 25.iso / program / svgacc25.zip / SVGACC.H < prev    next >
C/C++ Source or Header  |  1997-03-24  |  11KB  |  290 lines

  1. /* SVGACC Include File for Microsoft compatible C/C++ compilers
  2.  * Copyright 1993-1997 by Stephen L. Balkum and Daniel A. Sill
  3.  * Zephyr Software P.O. Box 7704, Austin, Texas  78713-7704
  4.  * Last Update 1/1/96
  5.  */
  6.  
  7. #ifndef SVGACC_H
  8. #define SVGACC_H
  9.  
  10. typedef unsigned char byte;
  11.  
  12. typedef struct {
  13.     char r;
  14.     char g;
  15.     char b;
  16. } RGB;
  17.  
  18. typedef RGB PaletteData[256];
  19.  
  20. typedef struct {
  21.     byte hotspotx;
  22.     byte hotspoty;
  23.     byte data[384];
  24. } MouseCursor;
  25.  
  26. typedef struct {
  27.     byte width;
  28.     byte height;
  29.     byte data[4096];
  30. } Font;
  31.  
  32. typedef enum {
  33.     NO_ACTION = 0,
  34.     SET,
  35.     XOR,
  36.     OR,
  37.     AND
  38. } PixelMode;
  39.  
  40. typedef enum {
  41.     UNKNOWN = 0,
  42.     ACUMOS,
  43.     ATI,
  44.     AHEADA,
  45.     AHEADB,
  46.     CHIPSTECH,
  47.     CIRRUS,
  48.     EVEREX,
  49.     GENOA,
  50.     NCR,
  51.     OAKTECH,
  52.     PARADISE,
  53.     REALTEK,
  54.     TRIDENT,
  55.     TSENG3,
  56.     TSENG4,
  57.     VESA,
  58.     VIDEO7,
  59.     AVANCE,
  60.     MXIC,
  61.     PRIMUS
  62. } VGAChipset;
  63.  
  64. typedef struct {
  65.     unsigned int width;
  66.     unsigned int height;
  67.     byte data[1];
  68. } RasterBlock;
  69.  
  70. typedef struct {
  71.     int x;
  72.     int y;
  73. } D2Point;
  74.  
  75. typedef struct {
  76.     int x;
  77.     int y;
  78.     int z;
  79. } D3Point;
  80.  
  81. typedef struct {
  82.     int eyex;
  83.     int eyey;
  84.     int eyez;
  85.     int scrd;
  86.     int theta;
  87.     int phi;
  88. } ProjParameters;
  89.  
  90. #ifdef __cplusplus
  91. extern "C" {
  92. #endif
  93.  
  94. /* Global variables */
  95. extern const int far maxx;
  96. extern const int far maxy;
  97. extern const int far viewx1;
  98. extern const int far viewy1;
  99. extern const int far viewx2;
  100. extern const int far viewy2;
  101.  
  102. /* 'BLocK' methods to manipulate RasterBlocks on and off the screen */
  103.  
  104. extern int  far blkget (int x1, int y1, int x2, int y2, RasterBlock far *gfxblk);
  105. extern void far blkput (PixelMode mode, int x, int y, RasterBlock far *gfxblk);
  106. extern void far blkresize (unsigned newxsize, unsigned newysize, RasterBlock far *sourcegfxblk, RasterBlock far *destgfxblk);
  107. extern int  far blkrotate (int ang, int backfill, RasterBlock far *sourcegfxblk, RasterBlock far *destgfxblk);
  108. extern int  far blkrotatesize (int ang, RasterBlock far *sourcegfxblk);
  109.  
  110. /* 'BYTECOPY' method for fast memory copy */
  111.  
  112. extern void far bytecopy (void far *src, void far *dst, unsigned long numbytes);
  113.  
  114. /* '2D' methods to transform D2Points */
  115.  
  116. extern void far d2rotate (int points, int xorigin, int yorigin, int ang, D2Point far *inary, D2Point far *outary);
  117. extern void far d2scale (int points, int xscale, int yscale, D2Point far *inary, D2Point far *outary);
  118. extern void far d2translate (int points, int xtrans, int ytrans, D2Point far *inary, D2Point far *outary);
  119.  
  120. /* '3D' methods to transform D3Points */
  121.  
  122. extern int  far d3project (int points, ProjParameters far *params, D3Point far *inary, D2Point far *outary);
  123. extern void far d3rotate (int points, int xorigin, int yorigin, int zorigin, int zrang, int yrang, int xrang, D3Point far *inary, D3Point far *outary);
  124. extern void far d3scale (int points, int xscale, int yscale, int zscale, D3Point far *inary, D3Point far *outary);
  125. extern void far d3translate (int points, int xtrans, int ytrans, int ztrans, D3Point far *inary, D3Point far *outary);
  126.  
  127. /* 'DRaW' methods for placing text and graphics primitives on screen */
  128.  
  129. extern void far drwaline (int colrbits, int colr, int x1, int y1, int x2, int y2);
  130. extern void far drwbox (PixelMode mode, int colr, int x1, int y1, int x2, int y2);
  131. extern void far drwcirarc (PixelMode mode, int colr, int centerx, int centery, int radius, long startang, long endang);
  132. extern void far drwcircle (PixelMode mode, int colr, int centerx, int centery, int radius);
  133. extern void far drwcubicbezier (PixelMode mode, int colr, D2Point far *pon1, D2Point far *poff1, D2Point far *poff2, D2Point far *pon2);
  134. extern void far drwellarc (PixelMode mode, int colr, int centerx, int centery, int radiusx, int radiusy, long startang, long endang);
  135. extern void far drwellipse (PixelMode mode, int colr, int centerx, int centery, int radiusx, int radiusy);
  136. extern void far drwfillbox (PixelMode mode, int colr, int x1, int y1, int x2, int y2);
  137. extern void far drwfillcircle (PixelMode mode, int colr, int centerx, int centery, int radius);
  138. extern void far drwfillellipse (PixelMode mode, int colr, int centerx, int centery, int radiusx, int radiusy);
  139. extern void far drwline (PixelMode mode, int colr, int x1, int y1, int x2, int y2);
  140. extern void far drwpoint (PixelMode mode, int colr, int x, int y);
  141. extern void far drwstring (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y);
  142. extern void far drwstringdn (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y);
  143. extern void far drwstringlt (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y);
  144. extern void far drwstringrt (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y);
  145.  
  146. /* 'FILL' methods for filling various regions on screen with a color */
  147.  
  148. extern void far fillarea (int xseed, int yseed, int bordercolr, int fillcolr);
  149. extern void far fillconvexpoly (int colr, int points, D2Point far *inary);
  150. extern void far fillpoly (int colr, int points, D2Point far *inary);
  151. extern void far fillcolor (int xseed, int yseed, int oldcolr, int newcolr);
  152. extern void far fillpage (int colr);
  153. extern void far fillscreen (int colr);
  154. extern void far fillview (int colr);
  155.  
  156. /* 'FONT' methods for setting the current font */
  157.  
  158. extern void far fontgetinfo (int far *wdth, int far *hght);
  159. extern void far fontset (Font far *font);
  160. extern void far fontsystem (void);
  161.  
  162. /* 'GET' methods to return information held by library */
  163.  
  164. extern void far getlaststring (RasterBlock far *strnggfxblk);
  165. extern long far getarccos (long cosvalue);
  166. extern long far getarcsin (long sinvalue);
  167. extern long far getarctan (long tanvalue);
  168. extern long far getcos (long angle);
  169. extern int  far getpoint (int x, int y);
  170. extern long far getsin (long angle);
  171. extern long far gettan (long angle);
  172.  
  173. /* 'JOYSTICK' method to read joysticks' status */
  174.  
  175. extern void far joystickinfo (int far *jax, int far *jay, int far *jabuts, int far *jbx, int far *jby, int far *jbbuts);
  176.  
  177. /* 'MOUSE' methods to interact with mouse driver */
  178.  
  179. extern void far mousebutpress (int reqbut, int far *xloc, int far *yloc, int far *num, int far *mbuts);
  180. extern void far mousebutrelease (int reqbut, int far *xloc, int far *yloc, int far *num, int far *mbuts);
  181. extern void far mousecursordefault (void);
  182. extern void far mousecursorset (MouseCursor far *mousecursor);
  183. extern void far mouseenter (void);
  184. extern void far mouseexit (void);
  185. extern void far mousehide (void);
  186. extern void far mouseinfo (int far *drvmajorver, int far *drvminorver, int far *mousetype, int far *irqnumber);
  187. extern void far mouselocset (int xloc, int yloc);
  188. extern void far mouserangeset (int x1, int y1, int x2, int y2);
  189. extern void far mouserestorestate (byte far *mousebuf);
  190. extern void far mousesavestate (byte far *mousebuf);
  191. extern void far mousesensset (int xsens, int ysens, int dblspdthresh);
  192. extern void far mouseshow (void);
  193. extern void far mousestatus (int far *x, int far *y, int far *mbuts);
  194. extern int  far mousestoragesize (void);
  195.  
  196. extern void far overscanset (int colr);
  197.  
  198. /* 'PAGE' methods to control paging abilities */
  199.  
  200. extern int  far pageactive (int page);
  201. extern int  far pagedisplay (int x, int y, int page);
  202.  
  203. /* 'PALette' methods to manipulate and activate palettes */
  204.  
  205. extern void far palchgauto (RGB far *pal, RGB far *newpal, int firstcolr, int lastcolr, int speed);
  206. extern void far palchgstep (RGB far *pal, RGB far *newpal, int firstcolr, int lastcolr, int percent);
  207. extern void far palcopy (RGB far *srcpal, RGB far *destpal, int firstcolr, int lastcolr);
  208. extern void far paldimstep (RGB far *pal, int firstcolr, int lastcolr, int percent);
  209. extern void far palget (RGB far *pal, int firstcolr, int lastcolr);
  210. extern void far palioauto (RGB far *pal, int firstcolr, int lastcolr, int speed);
  211. extern void far palrotate (RGB far *pal, int firstcolr, int lastcolr, int shift);
  212. extern void far palset (RGB far *pal, int firstcolr, int lastcolr);
  213.  
  214. /* 'PCX' methods to read / write PCX files and place images on screen */
  215.  
  216. extern int  far pcxgetinfo (const char far *name, int far *pcxxsize, int far *pcxysize, int far *numcolors, RGB far *pal);
  217. extern int  far pcxmake (int x1, int y1, int x2, int y2, const char far *name);
  218. extern int  far pcxput (PixelMode mode, int xloc, int yloc, const char far *name);
  219.  
  220. /* 'RESolution' methods to set various video modes */
  221.  
  222. extern int  far res320 (void);
  223. extern int  far res640 (void);
  224. extern int  far res640l (void);
  225. extern int  far res800 (void);
  226. extern int  far res1024 (void);
  227. extern int  far res1280 (void);
  228. extern int  far restext (void);
  229.  
  230. /* 'SCROLL' methods for scrolling various sections of the screen */
  231.  
  232. extern void far scrolldn (int x1, int y1, int x2, int y2, int num, int colr);
  233. extern void far scrolllt (int x1, int y1, int x2, int y2, int num, int colr);
  234. extern void far scrollrt (int x1, int y1, int x2, int y2, int num, int colr);
  235. extern void far scrollup (int x1, int y1, int x2, int y2, int num, int colr);
  236.  
  237. /* 'Sync' DELAY method */
  238.  
  239. extern void far sdelay (int count);
  240.  
  241. /* 'SET' methods to adjust library internal variables */
  242.  
  243. extern void far setcard (VGAChipset chip, int mem);
  244. extern void far setview (int x1, int y1, int x2, int y2);
  245.  
  246. /* 'SPRITE' methods for manipulating sprites on and off screen */
  247.  
  248. extern int  far spritecolldetect (int transcolr, int x1, int y1, int x2, int y2, RasterBlock far *sprite1, RasterBlock far *sprite2);
  249. extern void far spritegap (int transcolr, int x, int y, RasterBlock far *sprite, RasterBlock far *spritebkgnd);
  250. extern void far spriteget (int transcolr, int x, int y, RasterBlock far *sprite, RasterBlock far *spritebkgnd);
  251. extern void far spriteput (PixelMode mode, int transcolr, int x, int y, RasterBlock far *sprite);
  252.  
  253. /* 'VIDEO' methods to interact with video mode and display */
  254.  
  255. extern int  far videomodeget (void);
  256. extern void far videomodeset (int videomode);
  257. extern void far videooff (void);
  258. extern void far videoon (void);
  259.  
  260. /* 'Identification' methods to discover WHICH hardware is available */
  261.  
  262. extern int  far whichcpu (void);
  263. extern int  far whichjoystick (void);
  264. extern int  far whichmem (void);
  265. extern int  far whichmouse (void);
  266. extern VGAChipset far whichvga (void);
  267. extern int  far whichxms (unsigned int far *xmskbytesavail, unsigned int far *xmshandlesavail);
  268.  
  269. /* 'XMS' methods to store and retrieve extended memory */
  270.  
  271. extern int  far xmsallocate (unsigned int reqkbytes);
  272. extern int  far xmsblkget (int x1, int y1, int x2, int y2);
  273. extern int  far xmsblkput (PixelMode mode, int x, int y, int xmshandle);
  274. extern int  far xmscopy (int xmssrchandle, long srcoffset, int xmsdesthandle, long destoffset, unsigned long count);
  275. extern int  far xmserror (void);
  276. extern int  far xmsfree (int xmshandle);
  277. extern int  far xmsget (int xmshandle, long offset, void far *destmem, unsigned long count);
  278. extern int  far xmsput (void far *sourcemem, int xmshandle, long offset, unsigned long count);
  279. extern int  far xmsscreenget (void);
  280. extern int  far xmsscreenput (int xmshandle);
  281.  
  282. #ifdef __cplusplus
  283. }
  284. #endif
  285.  
  286. #endif
  287. /* SVGACC_H */
  288.  
  289.  
  290.